package org.jeecg.modules.xindian.reconciliation.entity;

import java.io.Serializable;
import java.util.List;
import java.util.Objects;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecg.modules.xindian.reconciliation.controller.enums.InvoiceNeedFlag;
import org.jeecg.modules.xindian.reconciliation.controller.enums.InvoiceStatus;
import org.jeecg.modules.xindian.reconciliation.enums.ChannelMatchState;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * @Description: insurance_statistics
 * @Author: jeecg-boot
 * @Date:   2023-07-22
 * @Version: V1.0
 */
@Data
@TableName("insurance_statistics")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="insurance_statistics对象", description="insurance_statistics")
public class InsuranceStatistics implements Serializable {
    private static final long serialVersionUID = 1L;

	/**id*/
	@TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "id")
    private java.lang.String id;
	/**创建人*/
    @ApiModelProperty(value = "创建人")
    private java.lang.String createBy;
	/**创建日期*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "创建日期")
    private java.util.Date createTime;
	/**更新人*/
    @ApiModelProperty(value = "更新人")
    private java.lang.String updateBy;
	/**更新日期*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "更新日期")
    private java.util.Date updateTime;
	/**订单号*/
	@Excel(name = "订单号", width = 15)
    @ApiModelProperty(value = "订单号")
    private java.lang.String orderNo;
	/**保单号*/
	@Excel(name = "保单号", width = 15)
    @ApiModelProperty(value = "保单号")
    private java.lang.String policyNo;
	/**订单来源*/
	@Excel(name = "订单来源", width = 15,dicCode = "DZDDLY")
    @Dict(dicCode = "DZDDLY")
    @ApiModelProperty(value = "订单来源")
    private java.lang.String sourceType;

    /**
     * 是否加密
     */
    @ApiModelProperty(value = "是否加密")
    private String isenctry;
	/**保险状态*/
	@Excel(name = "保险状态", width = 15,dicCode = "DZBDZT")
    @Dict(dicCode = "DZBDZT")
    @ApiModelProperty(value = "保险状态")
    private java.lang.String policyState;
    /**支付状态*/
    @Excel(name = "支付状态", width = 15,dicCode = "ZFZT")
    @Dict(dicCode = "ZFZT")
    @ApiModelProperty(value = "支付状态")
    private java.lang.String payState;
	/**支付时间*/
	@Excel(name = "支付时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "支付时间")
    private java.util.Date payTime;
	/**付款人名称*/
	@Excel(name = "付款人名称", width = 15)
    @ApiModelProperty(value = "付款人名称")
    private java.lang.String payAccountName;
	/**出保时间*/
	@Excel(name = "出保时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "出保时间")
    private java.util.Date insureActiveDate;
	/**保费*/
	@Excel(name = "保费", width = 15)
    @ApiModelProperty(value = "保费")
    private java.math.BigDecimal cost;
    @Excel(name = "保证金", width = 15)
    @ApiModelProperty(value = "保证金")
    private java.math.BigDecimal margin;
	/**渠道商*/
	@Excel(name = "渠道商", width = 15)
    @ApiModelProperty(value = "渠道商")
    private java.lang.String channelProvider;
    /**渠道商*/
    @Excel(name = "匹配状态", width = 15,dicCode = "DZPPZT")
    @Dict(dicCode = "DZPPZT")
    @ApiModelProperty(value = "匹配状态")
    private ChannelMatchState channelMatchState;
	/**地区*/
    @Excel(name = "地区", width = 15,dicCode = "DZQY")
    @Dict(dicCode = "DZQY")
    @ApiModelProperty(value = "地区")
    private java.lang.String area;
	/**平台*/
	@Excel(name = "平台", width = 15,dicCode = "JYPTBM")
    @Dict(dicCode = "JYPTBM")
    @ApiModelProperty(value = "平台")
    private java.lang.String platformCode;
	/**保险公司*/
	@Excel(name = "保险公司", width = 15,dicCode = "BXGS")
    @Dict(dicCode = "BXGS")
    @ApiModelProperty(value = "保险公司")
    private java.lang.String insuranceCompany;
	/**被保人*/
	@Excel(name = "被保人", width = 15)
    @ApiModelProperty(value = "被保人")
    private java.lang.String insuredName;
	/**投保人名称*/
	@Excel(name = "投保人名称", width = 15)
    @ApiModelProperty(value = "投保人名称")
    private java.lang.String policyHolderName;
	/**项目名称*/
	@Excel(name = "项目名称", width = 15)
    @ApiModelProperty(value = "项目名称")
    private java.lang.String projectName;
	/**项目编号*/
	@Excel(name = "项目编号", width = 15)
    @ApiModelProperty(value = "项目编号")
    private java.lang.String projectId;
	/**邀请码*/
	@Excel(name = "邀请码", width = 15)
    @ApiModelProperty(value = "邀请码")
    private java.lang.String inviteCode;
	/**业务流水号*/
	@Excel(name = "业务流水号", width = 15)
    @ApiModelProperty(value = "业务流水号")
    private java.lang.String applyNo;
	/**下单时间*/
	@Excel(name = "下单时间", width = 15)
    @ApiModelProperty(value = "下单时间")
    private java.lang.String applyTime;
	/**投保联系人名称*/
	@Excel(name = "投保联系人名称", width = 15)
    @ApiModelProperty(value = "投保联系人名称")
    private java.lang.String policyLinkmanName;
	/**投保联系人手机号*/
	@Excel(name = "投保联系人手机号", width = 15)
    @ApiModelProperty(value = "投保联系人手机号")
    private java.lang.String policyLinkmanMobilename;
	/**费率*/
	@Excel(name = "费率", width = 15)
    @ApiModelProperty(value = "费率")
    private java.math.BigDecimal rate;
	/**投保人社会统一信用代码*/
	@Excel(name = "投保人社会统一信用代码", width = 15)
    @ApiModelProperty(value = "投保人社会统一信用代码")
    private java.lang.String policyUcc;
	/**保险天数*/
	@Excel(name = "保险天数", width = 15)
    @ApiModelProperty(value = "保险天数")
    private java.lang.String policyDays;
	/**开标时间*/
	@Excel(name = "开标时间", width = 15)
    @ApiModelProperty(value = "开标时间")
    private java.lang.String kaiBiaoTime;
    /**保单下载链接*/
    @Excel(name = "保单下载链接", width = 15)
    @ApiModelProperty(value = "保单下载链接")
    private java.lang.String policyDownloadUrl;

    @Excel(name = "开函机构", width = 15)
    @ApiModelProperty(value = "开函机构")
    private java.lang.String insuranceCode;

    @Excel(name = "平台类型", width = 15,dicCode = "BXDL")
    @Dict(dicCode = "BXDL")
    @ApiModelProperty(value = "平台类型")
    private java.lang.String platform;


    /**业务员Id*/
    @Excel(name = "业务员Id", width = 15)
    @ApiModelProperty(value = "业务员Id")
    private java.lang.String salesmanId;
    /**业务人员名称*/
    @Excel(name = "业务人员名称", width = 15)
    @ApiModelProperty(value = "业务人员名称")
    private java.lang.String salesmanName;

    @Excel(name = "订单归属", width = 15)
    @ApiModelProperty(value = "订单归属")
    private  transient  String owners;


    /**
     * 是否需要开票标志
     */
    private InvoiceNeedFlag invoiceNeedFlag;


    /**
     * 开票状态
     * 枚举 {@link TODO letter_invoice_state 对应的类}
     */
    private InvoiceStatus invoiceStatus;


    /**
     * 发票下载地址
     */
    @Schema(description = "发票下载地址")
    private String invoiceDownloadUrl;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        InsuranceStatistics that = (InsuranceStatistics) o;
        return applyNo.equals(that.applyNo);
    }

    @Override
    public int hashCode() {
        return Objects.hash(applyNo);
    }
}
